package com.nclg.exam.utils;


import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

@Component
public class DateUtils {

    private static String FORMAT_DATE = "yyyy-MM-dd";
    private static String FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 预设格式格式化日期
     * @param date
     * @return
     */
    public static String format(Date date){
        return format(date,FORMAT_DEFAULT);
    }

    /**
     * 自定义格式格式化日期
     * @param date
     * @param format
     * @return
     */
    public static String format(Date date, String format){
        String time = "";
       if (null != date){
           SimpleDateFormat sdf = new SimpleDateFormat(format);
           time = sdf.format(date);
       }
       return time;
    }

    /**
     * 获取当前时间
     * @return
     */
    public static String now2Str(){
        return format(new Date());
    }

    /**
     * 获取当前日期
     * @return
     */
    public static String now2DateStr(){
        return format(new Date(), FORMAT_DATE);
    }

    /**
     * 预设格式: String -> Date
     * @param strDate yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static Date parse(String strDate) {
        return parse(strDate, FORMAT_DEFAULT);
    }

    /**
     * 自定义格式: String -> Date
     * @param strDate
     * @param format
     * @return
     */
    private static Date parse(String strDate, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * String -> Date
     * @param strDate yyyy-MM-dd
     * @return
     */
    public static Date parse2Date(String strDate) {
        return parse(strDate, FORMAT_DATE);
    }

    /**
     * 指定时间增加分钟
     * @param strDate 传入时间字符串
     * @param minute 需要增加的分钟
     * @return
     */
    public static Date addHours(String strDate, int minute) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(parse(strDate));
        calendar.add(Calendar.MINUTE, minute);
        return calendar.getTime();
    }

}